package git.soulbgm.ribbon.controller;

import git.soulbgm.ribbon.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @author 贺瑞杰
 * @version V1.0
 * @date 2018-09-28 14:47
 * @description
 */
@RestController
public class DemoController {

    @Autowired
    RestTemplate restTemplate;

    /**
     * 可以看到这里，我们除了去掉了原来与LoadBalancerClient相关的逻辑之外，对于RestTemplate的使用，我们的第一个url参数有一些特别。
     * 这里请求的host位置并没有使用一个具体的IP地址和端口的形式，而是采用了服务名的方式组成。那么这样的请求为什么可以调用成功呢？
     * 因为Spring Cloud Ribbon有一个拦截器，它能够在这里进行实际调用的时候，自动的去选取服务实例，并将实际要请求的IP地址和端口替换这里的服务名，从而完成服务接口的调用。
     */

    @RequestMapping("hello")
    public String hello(User user) {
        String url = "http://producer/hello?name=" + user.getName() + "&age=" + user.getAge();
        System.out.println(url);
        return restTemplate.getForObject(url, String.class);
    }


}
